﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="IEngineFlowController.cs" company="dimamartovoi">
//   Apache License
//   Version 2.0, January 2004
//   http://www.apache.org/licenses
// </copyright>
// <summary>
//   The EngineFlowController interface.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

using System;
using System.Collections.Generic;

using ActorModel.Engine.Core;

namespace ActorModel.Infrastructure
{
    public interface IEngineFlowController<TState>
    {
        Node<TState> this[int index] { get; }

        void Evolute();

        void SetEvolutionHandler(Func<TState, IEnumerable<TState>, IEnumerable<TState>> evolutionFunc);

        int TotalEvolutionsCount { get; }
    }
}